const app = getApp()
import { housePublicType, houseType, houseSmall, houseBig, houseStart, houseEnd} from "../../common/static/api_data.js"
import filter from '../../mixins/filter'
import { HiddenCall } from '../../request/api'
const request = new HiddenCall
Page({
  /**
   * filterData              搜索条件model
   */
  mixins: [filter],
  data: {
    housePublicType,
    houseType,
    regionList: [],
    searchData: {},
    small: houseSmall,
    big: houseBig,
    start: houseStart,
    end: houseEnd
  },
  onLoad: function (options) {
    if (app.globalData.filterData && Object.keys(app.globalData.filterData).length > 0) {
      this.rendering(app.globalData.filterData)
    }
  },
  /**
 * 重置房源筛选数据
 * author wl
 * regionList      清空区域列表
 * houseType    清空户型列表
 * housePublicType   清空状态列表
 * startdate       清空所有初始时间
 * enddate        清空所有结束时间
 * state              清空选中的状态值
 * regionValue  清空选中的区域值
 * houseValue   清空户型的值
 */
  reset() {
    // 区域布尔更改,户型布尔更改,状态布尔更改
    this.changeBoolean()
    // 重置筛选数据合集
    this.resetTenant()
    // 重新赋值清空
    this.setData({
      regionList: this.data.regionList,
      houseType: this.data.houseType,
      housePublicType: this.data.housePublicType,
      startdate: "",
      enddate: "",
      state: "",
      regionValue: "",
      houseValue: ""
    })
    app.globalData.filterData = null
  },
  /**
 * 选中渲染筛选条件数据
 * author wl
 */
  rendering(e) {
    // 拿到选中好的筛选条件model
    let jsonData = e.detail?e.detail.jsonData:e
    // 进行数据整理渲染
    this.houseFilterRender(jsonData)
  },
  /**
 * 新增筛选条件，确定筛选房源列表数据，修改筛选条件
 * author wl
 */
  save: function (e) {
    // 深拷贝筛选文件数据
    let file = JSON.parse(JSON.stringify(e.detail.saveFileBox))
    // 新增使用数据
    this.houseFilterModel(e)
    // 新增条件
    if (e.detail.confirm && !file) {
      // 新增的时候区域是否为空，赋予[]
      this.searchData.jsonData.region ? this.searchData.jsonData.region = this.searchData.jsonData.region :
        this.searchData.jsonData.region = []
      // 新增的时候户型是否为空，赋予[]
      this.searchData.jsonData.houseDescribe ? this.searchData.jsonData.houseDescribe = this.searchData.jsonData.houseDescribe : this.searchData.jsonData.houseDescribe = []
      // 如果有筛选条件名字和没有选中保存条件走新增接口
      e.detail.fileName !== "" ? request.houseFilterAdd(this.searchData).then((res) => {
      }) : ""
    }
    // 修改条件
    this.modifyFilter(e.detail.confirm, file, e.detail.hide, "house")
  },
  /**
   * 循环渲染当前选中筛选条件的数据
   * author wl
   * jsonData     筛选条件model
   * data            所有数据字典
   */
  houseForRendering(jsonData, data) {
    // 循环选中的筛选条件
    for (let prop in jsonData) {
      // 渲染数组类型
      if (jsonData[prop] && data[prop] instanceof Array) {
        for (let i = 0; i < data[prop].length; i++) {
          // 渲染状态和户型
          this.renderingHouseStatus(prop, data, jsonData, i, "housePublicType")
        }
        // 渲染区域
        if (prop === 'region') {
          // 循环对比筛选条件的值与字典，相同checked为true
          this.forArrRendering(data[prop], jsonData[prop])
          // 赋值更新数据
          this.setData({
            regionList: this.data.regionList
          })
        }
      }
      // 渲染非数组类型
      this.clearHour(jsonData, prop, data)
    }
    this.setData({ searchData: this.data.searchData })
  },
  /**
   * 渲染房源状态||户型
   * author wl
   */
  renderingHouseStatus(prop, data, jsonData, i, key) {
    //渲染状态
    this.renderingStatus(prop, data, jsonData, i, key)
    //渲染户型
    if (prop === 'houseDescribe') {
      // 循环对比筛选条件的值与字典，相同checked为true
      this.forArrRendering(data[prop], jsonData[prop])
      // 赋值更新数据
      this.setData({
        houseType: this.data.houseType
      })
    }
  },
  /**
 * 选择筛选条件户型
 */
  houseChange: function (e) {
    // 调用筛选组件事件
    // 获取选中的户型
    this.setData({
      houseType: e.detail.model,
      houseValue: e.detail.code.value
    })
  },
  /**
 * 选择房源状态
 */
  stateChange: function (e) {
    // 调用筛选组件事件
    // 获取选中的房源状态
    this.setData({
      housePublicType: e.detail.model,
      state: e.detail.value
    })
  },
})